package com.atguigu.tingshu.album.mapper;

import com.atguigu.tingshu.model.album.TrackInfo;
import com.atguigu.tingshu.query.album.TrackInfoQuery;
import com.atguigu.tingshu.vo.album.AlbumTrackListVo;
import com.atguigu.tingshu.vo.album.TrackListVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

@Mapper
public interface TrackInfoMapper extends BaseMapper<TrackInfo> {


    /**
     * 分页查询用户名下的音频数据
     * @param trackInfoIPage 分页对象
     * @param query 查询信息对象vo
     * @return 包含了音频数据的分页集合对象
     */
    IPage<TrackListVo> findUserTrackPage(@Param("trackInfoIPage") IPage<TrackListVo> trackInfoIPage, @Param("query") TrackInfoQuery query);

    /**
     * 在删除音频信息的时候，我们要去更新其他音频在当前专辑中的orderNum
     * @param id 专辑id
     * @param orderNum 删除的音频在专辑中的orderNum
     */
    void updateOrderNum(@Param("id") Long id, @Param("orderNum") Integer orderNum);

    /**
     * 根据专辑id，获取当前专辑下的所有相关音频信息
     * @param albumId 专辑id
     * @param page 分页信息
     * @return 音频信息
     */
    IPage<AlbumTrackListVo> findAlbumTrackPage(@Param("albumId") Long albumId, @Param("page") IPage<AlbumTrackListVo> page);
}
